import request from '@/utils/request'

/**
 * 获取食谱列表
 * @param {Object} params 查询参数(page, pageSize, category, keyword等)
 * @returns 食谱列表
 */
export function getRecipeList(params) {
  return request({
    url: '/recipe/page',
    method: 'get',
    params
  })
}

/**
 * 获取热门食谱
 * @param {Number} limit 限制条数
 * @returns 热门食谱列表
 */
export function getPopularRecipes(limit = 8) {
  return request({
    url: '/popular/recipes',
    method: 'get',
    params: { limit }
  })
}

/**
 * 获取食谱详情
 * @param {Number} id 食谱ID
 * @returns 食谱详情
 */
export function getRecipeDetail(id) {
  return request({
    url: `/recipe/${id}`,
    method: 'get'
  })
}

/**
 * 获取食谱步骤
 * @param {Number} recipeId 食谱ID
 * @returns 食谱步骤列表
 */
export function getRecipeSteps(recipeId) {
  return request({
    url: `/recipe/steps/${recipeId}`,
    method: 'get'
  })
}

/**
 * 获取食谱材料
 * @param {Number} recipeId 食谱ID
 * @returns 食谱材料列表
 */
export function getRecipeIngredients(recipeId) {
  return request({
    url: `/recipe/ingredients/${recipeId}`,
    method: 'get'
  })
}

/**
 * 收藏食谱
 * @param {Number} userId 用户ID
 * @param {Number} recipeId 食谱ID
 * @param {String} notes 收藏备注
 * @returns 操作结果
 */
export function collectRecipe(userId, recipeId, notes = '') {
  return request({
    url: '/collection/add',
    method: 'post',
    params: { userId, recipeId, notes }
  })
}

/**
 * 取消收藏食谱
 * @param {Number} userId 用户ID
 * @param {Number} recipeId 食谱ID
 * @returns 操作结果
 */
export function uncollectRecipe(userId, recipeId) {
  return request({
    url: '/collection/remove',
    method: 'delete',
    params: { userId, recipeId }
  })
}

/**
 * 检查是否已收藏食谱
 * @param {Number} userId 用户ID
 * @param {Number} recipeId 食谱ID
 * @returns 是否已收藏
 */
export function checkCollection(userId, recipeId) {
  return request({
    url: '/collection/check',
    method: 'get',
    params: { userId, recipeId }
  })
}

/**
 * 添加或更新评分
 * @param {Number} userId 用户ID
 * @param {Number} recipeId 食谱ID
 * @param {Number} rating 评分(1-5)
 * @param {String} comment 评论内容
 * @returns 操作结果
 */
export function rateRecipe(userId, recipeId, rating, comment = '') {
  return request({
    url: '/rating/add-or-update',
    method: 'post',
    params: { userId, recipeId, rating, comment }
  })
}

/**
 * 获取食谱平均评分
 * @param {Number} recipeId 食谱ID
 * @returns 平均评分
 */
export function getRecipeAverageRating(recipeId) {
  return request({
    url: `/rating/average/${recipeId}`,
    method: 'get'
  })
}

/**
 * 获取用户对食谱的评分
 * @param {Number} userId 用户ID
 * @param {Number} recipeId 食谱ID
 * @returns 用户评分
 */
export function getUserRating(userId, recipeId) {
  return request({
    url: '/rating/user-rating',
    method: 'get',
    params: { userId, recipeId }
  })
}

/**
 * 获取食谱的所有评价
 * @param {Number} recipeId 食谱ID
 * @returns 评价列表
 */
export function getRecipeRatings(recipeId) {
  return request({
    url: `/rating/recipe-ratings/${recipeId}`,
    method: 'get'
  })
}

/**
 * 记录用户浏览历史
 * @param {Number} userId 用户ID
 * @param {Number} recipeId 食谱ID
 * @param {Number} viewDuration 浏览时长(秒)
 * @returns 操作结果
 */
export function recordViewHistory(userId, recipeId, viewDuration) {
  return request({
    url: '/view-history/record',
    method: 'post',
    params: { userId, recipeId, viewDuration }
  })
}

/**
 * 获取用户浏览历史
 * @param {Number} userId 用户ID
 * @param {Number} page 页码
 * @param {Number} size 每页数量
 * @returns 浏览历史列表
 */
export function getUserViewHistory(userId, page = 1, size = 10) {
  return request({
    url: '/view-history/list',
    method: 'get',
    params: { userId, page, size }
  })
}

/**
 * 清空用户浏览历史
 * @param {Number} userId 用户ID
 * @returns 操作结果
 */
export function clearUserViewHistory(userId) {
  return request({
    url: '/view-history/clear',
    method: 'delete',
    params: { userId }
  })
}

/**
 * 获取用户收藏列表
 * @param {Number} userId 用户ID
 * @param {Number} page 页码
 * @param {Number} size 每页数量
 * @returns 收藏列表
 */
export function getUserCollections(userId, page = 1, size = 10) {
  return request({
    url: '/collection/list',
    method: 'get',
    params: { userId, page, size }
  })
}

/**
 * 获取用户评分历史
 * @param {Number} userId 用户ID
 * @param {Number} page 页码
 * @param {Number} size 每页数量
 * @returns 评分历史列表
 */
export function getUserRatings(userId, page = 1, size = 10) {
  return request({
    url: '/rating/user-ratings',
    method: 'get',
    params: { userId, page, size }
  })
}

/**
 * 获取推荐食谱列表
 * @param {Object} params 查询参数(current, size等)
 * @returns 推荐食谱列表
 */
export function getRecommendedRecipeList(params) {
  return request({
    url: '/recipe/page',
    method: 'get',
    params: {
      ...params,
      recommended: true
    }
  })
}
